みずほ銀行オンライン・システム障害について 〜 注50

公開: 2021年12月17日

更新: 2021年12月18日

注50. 開発するソフトウェアの規模と複雑さ

近年のソフトウェア開発で作成されるプログラムの規模を、一般的な計測法である行数で表現すると、数百万行から数千万行になっていると言われている。1960年代に開発された大規模ソフトウェアである、IBMのOS/360は、30万行に満たなかったと言われている。そのソフトウェアでも、2百人を超える技術者が3年以上をかけて、完成できなかった。その失敗の経験は、ブルックスによって、1975年に出版されている。

ブルックスは、このプロジェクトで、ソフトウェアの難しさを学んだとしている。その難しさの第一は、プログラムの記述規模の長さによって生じる人間の能力を超える「複雑さ」であったと、ブルックスは述べた。設計を始めた時には、容易に作成できると考えていたプログラムでも、実際に作成すると、他のプログラムとの関係が複雑で、簡単でなく、そのプログラムが正しく動作するかどうかを確認しようとすると、大変な努力が必要になった。プログラムの作成には、当初、ブルックスらが想定していたよりもはるかに多大な時間がかかった。

プログラミング言語や、プログラミングを行うためのコンピュータ環境は、1960年代と2000年以降を比較すると、大幅な進歩が見られる。しかし、プログラムを作成するための作業の難しさは、ほとんど変わっていない。さらに、作成するプログラムの機能は、爆発的に大きくなっており、それに伴って、プログラムの規模は、当時の10倍から100倍になっている。

このプログラム記述を印刷すると、少なく見積もっても2万ページの印刷物に相当する量になる。それは、200ページの本にして100冊以上である。数千万行になれば、それは20万ページ以上、1,000冊以上の本に相当する記述量である。その量の書物を、隅から隅まで読み、それが正しいことを確認することは、人間には実質的に不可能である。1ページを読むのに、1時間かかるとするとき、100万行程度のプログラムでも、20万時間、すなわち、1日8時間、1年250日とする場合、10年間かかる計算になる。。

我々は、200ページの本1冊を出版するのに、数か月をかける。それでも、出版後に誤字脱字などを含めて、数十か所の誤りを発見する。このことから分かるように、大規模なソフトウェアの開発では、誤りのないプログラムにすることは現実的に不可能であることが分かる。一般的には、新しく作成したプログラムでは、しっかりと試験で確認した後でも、1000行当り、1個所以上、10個以下の誤りが残るとされている。つまり、1,000万行のプログラムには、1万個以上の誤りが残っていても不思議ではない。さらに、完成後に発見した誤りを修正する時、10回の修正で、1回の修正誤りが発生する。つまり、1万個の誤りを取り除いても、1,000個以上の誤りが、新しく入ってくると言える。

参考になる読み物

ブルックス, F.、「人月の神話」、丸善出版(2014)